package com.clusterswisdom.horn.api.tmall.action.bill;

import com.alibaba.fastjson.JSONObject;
import com.clusterswisdom.horn.api.ioc.HornAction;
import com.clusterswisdom.horn.api.ioc.HornResponse;
import com.clusterswisdom.horn.api.ioc.api.ApiConfig;
import com.clusterswisdom.horn.api.tmall.action.AbstractTmallAction;

/**
 * 
 * 
 * @author bin
 *
 */
public class SendOrderAccountsAction extends AbstractTmallAction implements HornAction {

//	public static final String CHANNEL_NAME = "天猫";
//	
//	/**
//	 * 邮费费用对应code
//	 */
//	private static final String Post_Code = "";
//	
//	/**
//	 * 邮费费用对应的名称
//	 */
//	private static final String Post_Name = "";
//	
//	/**
//	 * 类目佣金对应的code
//	 */
//	private static final String Item_Code = "";
//	
//	/**
//	 * 类目佣金对应的名称
//	 */
//	private static final String Item_Name = "";
//	
//	/**
//	 * 淘客费用对应的code
//	 */
//	private static final String ATB_Code = "";
//	
//	/**
//	 * 淘客费用对应名称
//	 */
//	private static final String ATB_Name = "";
//	@Override
//	public HornResponse execute(ApiConfig config, JSONObject param) throws Exception {
//		ChannelOrderBill orderBill = new ChannelOrderBill();
//		orderBill.setChannel(CHANNEL_NAME);
//		orderBill.setBillDateStr(getBillDateStr(param));
//		orderBill.setBillSpanStr(getBillSpanStr(param));
//		orderBill.setOrderList(getDaysOrderBills(param));
//		
//		return new HornResponse(true, orderBill);
//	}
//	
//	/**
//	 * 根据订单获取所有账务数据字段
//	 * 
//	 * @param bill
//	 * @return
//	 * @throws Exception 
//	 */
//	protected ChannelOrderBillItem formateOrderBill(Bill bill) throws Exception {
//		ChannelOrderBillItem item = new ChannelOrderBillItem();
//		//TODO  填充所有数据
//		Trade trade=getTradeByBill(bill);
//		item.setTorderid(trade.getTid().toString());
//		item.setTotalMoney(trade.getTotalFee());
//		
//		//item.setCountMoney(Double.toString(getTotalFeeByTrade(trade)));
//		//这个是通过账单获取 到的当前账单结算金额
//		item.setCountMoney(bill.getAmount().toString());
//		item.setFeeList(getFeeList(bill,trade));
//		item.setDifferFee(getDiferFee(item));
//		return item;
//	}
//	
//	protected String getBillDateStr(JSONObject param) {
//		Calendar begin = getBeginDate(param);
//		
//		StringBuilder builder = new StringBuilder();
//		builder.append(begin.get(Calendar.YEAR));
//		builder.append("-");
//		builder.append((begin.get(Calendar.MONTH) + 1));
//		builder.append("月");
//		return builder.toString();
//	}
//	
//	protected String getBillSpanStr(JSONObject param) {
//		Calendar begin = getBeginDate(param);
//		Calendar end = getEndDate(param);
//		
//		StringBuilder builder = new StringBuilder();
//		builder.append(DateFormatUtils.format(begin, "yyyy-MM-dd"));
//		builder.append("至");
//		builder.append(DateFormatUtils.format(end, "yyyy-MM-dd"));
//		
//		return builder.toString();
//	}
//
//	protected List<ChannelOrderBillItem> getDaysOrderBills(JSONObject param) throws Exception {
//		Calendar begin = getBeginDate(param);
//		Calendar end = getEndDate(param);
//		List<ChannelOrderBillItem> bills=new LinkedList<ChannelOrderBillItem>();
//		
//		while (begin.before(end)) {
//			param.put("start_time", begin.getTime());
//			begin.add(Calendar.DAY_OF_YEAR, 1);
//			param.put("end_time", begin.getTime());
//			
//			int pageNo = 1;
//			BillBillsGetResponse response = null;
//			do {
//				param.put("page_no", pageNo++);
//				response = (BillBillsGetResponse)TmallInstance.getInstance().executeRequest(param, "bill", "billBillsGet");
//				if(response.isSuccess() && response.getBills() != null && response.getBills().size() > 0){
//					for (Bill bill : response.getBills()) {
//						bills.add(formateOrderBill(bill));
//					}
//				}
//				
//			} while(response.getHasNext());
//		}
//		
//		return bills;
//	}
//	
//	private Calendar getBeginDate(JSONObject param) {
//		Calendar calendar = param == null ? null : GregorianCalendar.getInstance();
//		Date begin = param.getDate("startTime");
//		if (begin != null) {
//			calendar.setTime(begin);
//			
//		} else {
//			calendar.set(Calendar.DAY_OF_MONTH, 28);
//			calendar.add(Calendar.MONTH, -1);
//			
//		}
//		
//		calendar.set(Calendar.HOUR_OF_DAY, 0);
//		calendar.set(Calendar.MINUTE, 0);
//		calendar.set(Calendar.SECOND, 0);
//		calendar.set(Calendar.MILLISECOND, 0);
//		
//		return calendar;
//	}
//	
//	private Calendar getEndDate(JSONObject param) {
//		Date end = param == null ? null : param.getDate("lastTime");
//		Calendar calendar = GregorianCalendar.getInstance();
//		if (end != null) {
//			calendar.setTime(end);
//			
//		} else {
//			calendar.set(Calendar.DAY_OF_MONTH, 27);
//			
//		}
//		
//		calendar.set(Calendar.HOUR_OF_DAY, 23);
//		calendar.set(Calendar.MINUTE, 59);
//		calendar.set(Calendar.SECOND, 59);
//		calendar.set(Calendar.MILLISECOND, 999);
//		
//		return calendar;
//	}
//	
//	/**
//	 * 根据账单获取订单
//	 * @param bill
//	 * @return 单笔交易信息
//	 * @throws Exception 
//	 */
//	private Trade getTradeByBill(Bill bill) throws Exception{
//		String tradeId = bill.getTradeId();
//		JSONObject param = new JSONObject();
//		param.put("tid", tradeId);
//		TradeGetResponse response = (TradeGetResponse)TmallInstance.getInstance().executeRequest(param, "trade", "tradeGet");
//		return response.getTrade();
//	}
//	
//	/**
//	 * 根据订单获取结算金额
//	 * @param trade
//	 * @return  
//	 */
//	@SuppressWarnings("unused")
//	private double getTotalFeeByTrade(Trade trade){
//		double total = 0.00d;
//		if (trade == null) {
//			return 0.00d;
//		}
//		
//		for (Order order : trade.getOrders()) {
//			total += TmallUtil.getPrice(order.getTotalFee());
//		}
//		
//		List<PromotionDetail> promotions = trade.getPromotionDetails();
//		if (promotions == null || promotions.size() == 0) {
//			return 0.00d;
//		}
//		
//		double free = 0.00d;
//		for (PromotionDetail promotionDetail : promotions) {
//			free += TmallUtil.getPrice(promotionDetail.getDiscountFee());
//		}
//		
//		total -= free;
//		return total;
//	}
//	
//	/**
//	 * 获取费用列表
//	 * @param bill
//	 * @param trade
//	 * @return 费用列表
//	 */
//	private List<BillFee> getFeeList(Bill bill,Trade trade) throws Exception{
//		List<BillFee> billFees = new LinkedList<BillFee>();
//		//邮费
//		if(trade.getPostFee() != null){
//			BillFee billFee = new BillFee();
//			billFee.setFeeCode(Post_Code);
//			billFee.setFeeName(Post_Name);
//			billFee.setFeeValue(trade.getPostFee());
//			billFees.add(billFee);
//		}
//		
//		//类目佣金
//		if(trade.getCommissionFee() != null){
//			BillFee billFee = new BillFee();
//			billFee.setFeeCode(Item_Code);
//			billFee.setFeeName(Item_Name);
//			billFee.setFeeValue(trade.getCommissionFee());
//			billFees.add(billFee);
//		}
//		
//		//淘客佣金
//		AtbItemsGetResponse response = (AtbItemsGetResponse)TmallInstance.getInstance().executeRequest(new JSONObject(), "tbk", "atbItemsGet");
//		List<AitaobaoItem> aitaobaoItems = response.getItems();
//		List<Order> orders = trade.getOrders();
//		if(orders != null){
//			BillFee billFee = new BillFee();
//			billFee.setFeeCode(ATB_Code);
//			billFee.setFeeName(ATB_Name);
//			double feeNum = 0.00;
//			for(AitaobaoItem item:aitaobaoItems){
//				for(Order order:orders){
//					if(item.getNumIid().equals(order.getNumIid())){
//						feeNum += Double.parseDouble(item.getCommission())*order.getNum();
//					}
//				}
//			}
//			billFee.setFeeValue(Double.toString(feeNum));
//			billFees.add(billFee);
//		}
//		return billFees;
//	}
//	
//	/**
//	 * 获取差额
//	 * @param item
//	 * @return
//	 */
//	private String getDiferFee(ChannelOrderBillItem item){
//		double disferFee = Double.parseDouble(item.getTotalMoney()) - Double.parseDouble(item.getCountMoney());
//		return Double.toString(disferFee);
//	}
	@Override
	public HornResponse execute(ApiConfig config, JSONObject param)
			throws Exception {
		// TODO Auto-generated method stub
		return null;
	}
}
